# 使用官方 PHP 镜像作为基础（带 Swoole 扩展的 Alpine 版本）
FROM php:8.2-alpine3.19

# 设置中国镜像加速（可选）
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories

# 安装基础系统依赖
RUN apk add --no-cache \
    # 系统工具
    git \
    bash \
    curl \
    openssl \
    tzdata \
    # 编译依赖
    autoconf \
    g++ \
    make \
    linux-headers \
    # MongoDB 依赖
#    libmongoc-dev \
    icu-dev \
    openssl-dev \
    curl-dev \
    # 其他常用工具
    supervisor

# 安装 PHP 扩展
RUN docker-php-ext-install -j$(nproc) \
    pdo_mysql \
    sockets \
    pcntl \
    opcache \
    && pecl install -o -f \
    mongodb \
    redis \
    swoole \
    xlswriter \
    && docker-php-ext-enable \
    mongodb \
    redis \
    swoole \
    opcache \
    xlswriter
#    && rm -rf /tmp/pear


##安装xlswriter扩展
#RUN pecl install xlswriter \
#    echo "extension=xlswriter.so" > /usr/local/etc/php/conf.d/docker-php-ext-xlswriter.ini


# 设置时区（Asia/Shanghai）
RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
    && echo "Asia/Shanghai" > /etc/timezone

# 安装 Composer
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer

# 创建项目目录
RUN mkdir -p /opt/www
WORKDIR /opt/www

# 复制项目文件（建议使用 .dockerignore 过滤）
COPY . .

# 安装 Hyperf 和项目依赖（生产模式）
#RUN composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ \
#    && composer install --no-dev --optimize-autoloader --no-interaction \
#    && composer dump-autoload -o

# 暴露端口
EXPOSE 9501

# 健康检查
HEALTHCHECK --interval=30s --timeout=3s \
    CMD curl -f http://localhost:9501 || exit 1

# 启动命令（根据实际启动文件调整）
CMD ["php", "bin/hyperf.php", "start"]